home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / intrvews / xgrab.lha / xgrab / ui / OGC / cons.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-03-06  |  761 b   |  37 lines

  1. /**
  2.    GRAB Graph Layout and Browser System
  3.  
  4.    Copyright (c) 1989, Tera Computer Company
  5.  **/
  6.  
  7. struct SEXPR {
  8.     struct SEXPR * sexpr_car;
  9.     struct SEXPR * sexpr_cdr;
  10. };
  11.  
  12. typedef struct SEXPR * sexpr;
  13.  
  14. extern sexpr cons();
  15.  
  16. # define nil ((sexpr) 0)
  17. # define car(x) ((x) -> sexpr_car)
  18. # define cdr(x) ((x) -> sexpr_cdr)
  19. # define null(x) ((x) == nil)
  20.  
  21. # define head(x) car(x)
  22. # define tail(x) cdr(x)
  23.  
  24. # define caar(x) car(car(x))
  25. # define cadr(x) car(cdr(x))
  26. # define cddr(x) cdr(cdr(x))
  27. # define cdar(x) cdr(car(x))
  28. # define caddr(x) car(cdr(cdr(x)))
  29.  
  30. # define first(x) car(x)
  31. # define second(x) cadr(x)
  32. # define third(x) caddr(x)
  33.  
  34. # define list1(x) cons(x, nil)
  35. # define list2(x,y) cons(x, cons(y, nil))
  36. # define list3(x,y,z) cons(x, cons(y, cons(z, nil)))
  37.